// 整个项目的入口，有什么特点？
// 特点就是整个项目 只有这个文件是被node启动  node app.js
// 职责：
/*
  1. 开启web服务器
    - 3步开启web服务器
    - 处理各种content-type类型的请求体数据 (先处理urlencoded和json)
    - 做跨域处理

  2. 加载路由文件
   - 所有的路由文件都是存放在routes文件夹下
     - userRouter.js  专门用来处理登录和注册的 （2个接口）
     - heroRouter.js  专门用来处理英雄数据管理的 （6个接口）
   - app.js中注册路由

   练习出错列表：
   1. 内置和第三方中间件忘记用()执行导致服务器不响应
   2. userRouter.js 或者heroRouter.js不写代码导致 server.use()注册失败
     原因：js文件默认有module.exports 是一个空对象，所以server.use()注册是不匹配导致报错
   3. 对于中间件的执行过程不理解
*/

const express = require('express');

const server = express();
// 处理各种content-type类型的请求体数据 (先处理urlencoded和json)
server.use(express.urlencoded());  //中间件,(req,res,next)=>{}
server.use(express.json());

// 将服务器的uploads文件夹做静态资源托管
server.use('/uploads', express.static('uploads'));
server.use('/www', express.static('views'));

//  做跨域处理
// const cors = require('cors');
// server.use(cors());

const execSql = require('./utils/mysqlHelper.js');
// 自定义一个全局中间件函数将execSql方法注册到res上
server.use((req, res, next) => {
  res.execSql = execSql;
  next();
});


const projectRouter1 = require('./routes/projectRouter1.js');
server.use('/project1', projectRouter1) 

const postRouter = require('./routes/postRouter.js');
server.use('/post', postRouter)

// // 异常处理中间件
// server.use((err, req, res, next) => {
//   // 如果err.name === 'UnauthorizedError' 成立则表示token验证失败
//   if (err.name === 'UnauthorizedError') {
//     res.status(401).send({ code: 401, msg: 'token验证失败，请重新登录' });
//   }
// })

server.listen(6007, () => {
  console.log('6007-简历项目生成服务器启动');
});